#include<iostream>

//代码的复用性
//模板关键字
//typename:定义后面跟的字符串是数据类型
//T:参数化的数据类型变量名
template<typename T> //模板函数

T add(T a,T b)
{
    
    return a+b;
}
int add(int a,int b)//普通函数
{
    return a+b;
}

int main()
{
    // //显示调用模板函数
    // int a=add<int>(1,2);
    // //隐式调用
    // int b=add(1,2);
    // //double b=add<double>(3.1,2.4);
    // std::cout<<b<<std::endl;


//当模板函数遇上普通函数
    //如果类型匹配优先调用普通函数
    //如果类型不匹配，优先模板函数
    //模板函数不支持类型的隐式转化（是什么类型就是什么类型，不能变）
    int a=add(1,2);
    return 0;
}